/*
 * Copyright (c) 2023 fred
 * Licensed under the Apache License,Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { Element } from '../../nodes/Element'
import { EvaluatorCssNthEvaluator } from './EvaluatorCssNthEvaluator'
export class EvaluatorIsNthLastOfType extends EvaluatorCssNthEvaluator {
  constructor(a: number, b: number) {
    super(b, a)
  }

  calculatePosition(root: Element, element: Element): number {
    let parent = element.parent()
    if (parent === undefined || parent === null) {
      return 0
    }
    let pos = 0
    let next = element
    while (next !== undefined && next !== null) {
      if (next.normalName() === element.normalName()) {
        pos++
      }
      next = next.nextElementSibling()
    }
    return pos
  }

  getPseudoClass(): string {
    return `nth-last-of-type`
  }
}